#include "game.h"
#include "meny.h"
#include "video.h"
#include "net.h"
#include <fstream>
#include <iostream>
#include <cstdlib>

//#include "base64.h"

int main( int argc, char *argv[] ) {
	/*char test[512], buff[1024];
	strcpy(test, "Tjena!\n");
	b64_encode(test, buff);
	b64_decode(buff, test);
	printf("%s", test);*/
	//Internet internet( argc==2 ? "din" : "min", argc==2 ? "min" : "din" );
	new Video();

	// Skapa menyn, rita menyn
	new Meny();
	meny->startMeny();
	delete meny;

	// Rita upp spel, flippa allt
	video.ritaOmAllt();
	video.flip();

	// Main game loop
	bool running = true;
	while( running ) {
		SDL_Event event;
		SDL_WaitEvent( &event );

		switch( event.type ) {
			case SDL_VIDEOEXPOSE: {
				video.flip();
				break;
			}

			case SDL_QUIT: {
				if ( internet ) {
					Packet p;
					p.action = QUIT;
					internet->sendData( (const char*)&p );
				}
				running = false;
				break;
			}

			case SDL_MOUSEBUTTONDOWN: {
				// Om det är ett nätverksspel så får man bara spela när det är ens tur...
				//if( ( internet || network ) && game->vemsDrag != game->minFarg ) break;
				
				game->musKlick( event.button.x, event.button.y );
				video.flip();

				// Om vi är connectade, skicka ett paket till den andra spelaren.
				if ( network ) {
					Packet p;
					p.action = MUS_KLICK;
					p.mus_x = event.button.x;
					p.mus_y = event.button.y;
					p.send();
				}
				if ( internet ) {
					Packet p;
					p.action = MUS_KLICK;
					p.mus_x = event.button.x;
					p.mus_y = event.button.y;
					internet->sendData( (const char*)&p );
				}

				break;
			}

			// Userevent, det är när man tar emot paket från jultomten.
			case SDL_USEREVENT: {
				Packet& p = Packet::getPacket( event );
				// Man har klickat på något.
				if ( p.action == MUS_KLICK ) {
					game->musKlick( p.mus_x, p.mus_y );
					video.flip();
				}
				else if ( p.action == NYTT_SPEL ) {
					game->minFarg = !p.hostsFarg;
				}
				// Man har blivit bedd att "dra åt ¤%#¤#%#". Rita upp en meny
				else if ( p.action == QUIT ) {
					new Meny();
					meny->startMeny();
					delete meny;
					video.ritaOmAllt();
					video.flip();
				}
				// NÄSTA!!
				p.clear();
			}
		}
	}

	if( game ) delete game;

	return 0;
}
